1. Field of the Invention
The invention generally relates to robotics. In particular, the invention relates to a hardware abstraction layer that enhances portability of control or behavior software.
2. Description of the Related Art
Robots can be used for many purposes. For example, robots can be used in industrial applications for repetitive tasks or in hazardous environments, can be configured as toys to entertain, and the like. The hardware for robots and the control software for robots are ever increasing in sophistication. A robot can include a variety of sensors and actuators that are attached to a structure.
One drawback to existing robots and robot software is a lack of transparency for the control software. In existing robots, software is painstakingly adapted to each new robot configuration. For example, in a typical robotic software architecture, the robotic software interacts with the robotic hardware through low-level device drivers. These low-level device drivers are specific to their corresponding hardware devices, and the low-level device drivers support commands and feedback information that are typically sent and received in terms of the hardware device's physical characteristics. For example, a low-level device driver for a drive system motor can receive commands from the robotic software to spin the motor at a specified speed, such as a specified number of revolutions per minute. However, the drive system as a whole can include not only the motor, but gears and wheels as well. Thus, if a change is made to a gear ratio and/or wheel diameter, the software developer may have to revise the robotic software to change the specified number of revolutions per minute such that the robot behaves as desired.
These menial programming changes are time consuming and are inefficient to both software and hardware development of robots. Embodiments of the invention advantageously isolate the robotic software from the robotic hardware and overcome the disadvantages of the prior art.